1. Field of the Invention
The invention relates generally to the field of digital data processing systems.
2. Description of the Prior Art
A typical digital data processing system includes three basic elements, namely a processor element, a memory element, and an input/output element. The memory element stores information in addressable storage locations. This information includes both data and instructions for processing the data. The processor element includes one or more digital data processing units, or "processors", each of which causes information to be transferred, or fetched, to it from the memory element, interprets the incoming information as either instructions or data, and processes the data in accordance with the instructions. The results are then stored in addressed locations in the memory element.
The input/output element also communicates with the memory element in order to transfer information into the system and to obtain the processed data from it. Units comprising the input/output element normally operate in accordance with control information supplied to it by the processor element. The control information defines the operation to be performed by the input/output unit. At least one class of operations performed by an input/output unit is the transfer of user information, that is, information used by a user program, between the input/output unit and the memory element. Typical units comprising the input/output element include, for example, printers, teletypewriters, and video display terminals, and may also include secondary information storage devices such as disk or tape storage units.
In addition to functioning as input/output devices, disk storage units and, sometimes, tape storage units may also function as part of the memory element. In particular, a memory element typically includes a main memory, whose contents are accessible to the processor relatively quickly but which is generally relatively high-cost storage. Modern main memories are typically implemented using MOS or bipolar semiconductor technology and may provide on the order of a fraction of a megabyte to several tens of megabytes of storage.
A processor includes a number of circuits, including an interface circuit which allows it to communicate with other units in the system, a data path circuit in which the processing actually occurs, and a control circuit which controls the data path circuit and interface circuit in response to the processing. A processor may also include circuits for performing memory management operations, if the processor supports virtual addressing, and a cache memory. The data path circuitry typically includes a set of general purpose registers, a set of temporary registers, a set of working registers, all of which can store data, and arithmetic and logic circuits for performing arithmetic and logic operations on the data.
A typical instruction includes an operation code and one or more operand specifiers. Operand specifiers may contain the data, but generally they specify a location in the data processing system which contains the data to be processed. The operation code defines how the data is to be processed. An operand specifier may identify locations in the memory, the input/output units, the general purpose registers or other processor registers outside the data path as containing data to be processed. The temporary registers and working registers may not be identified in an instruction, but they are used under some circumstances to temporarily store the data to be processed, particularly where the data is from outside the processor. In addition, execution of some instructions require several cycles through the arithmetic and logic circuits, with each cycle producing intermediate results, and the temporary registers in particular may be used to store the intermediate results. After processing, the processed data is stored in the working registers prior to being transmitted to the final storage location, which may also be a general purpose register or the memory.
In each processing cycle, the control circuits issue microinstructions for controlling the registers and arithmetic and logic circuits in the data path. In a typical microinstruction, the control circuits are required to provide the identification of three locations, two to provide the data to be processed and the third to receive the data for storage. Providing that information in the microinstructions heretofore has required a microword field explicitly for all three locations. Thus, connections are required for all three fields to transfer the information in the fields to the working registers from the control circuit. Furthermore, providing a microinstruction field explicitly for all three registers also requires circuitry in the control circuits for generating those fields. In a microprocessor, it is preferable to minimize the number of connections between circuits, and also to minimize the number of circuits forming the microprocessor.
The arithmetic and logic circuits typically perform a selected number of relatively simple arithmetic and logic operations on input values, including addition, substraction, comparisons, pass (in which a value at a selected input is passed to the output), complement (in which the value at a selected input is inverted or complemented) and so forth. Under control of the microinstructions, however, more complex arithmetic and logical operations, such as multiplication and division, can be performed to execute a program instruction. Multiplication can be performed as a series of additions, shifts and pass operations, and division can be performed as a series of addition, shift and subtraction operations, with each operation being enabled by a microinstruction. Whether, in a multiplication, for example, an addition or pass operation is to be performed depends on the results of the previous operation. In current systems, the decoding of each microinstruction is delayed until the results of each operation have been determined, which lengthens the time required to perform the operation.